package com.wn.product.config;

import org.springframework.amqp.core.*;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author yellow Docter
 * @date 2022 -11-03
 * @desc
 *
 *  测试 java 代码创建
 *      队列
 *      交换机
 *      队列和交换机进行绑定
 */
@Configuration
public class RabbitMQConfig {

    //1、 队列 Queue 对象
    @Bean("queue")
    public Queue queue(){
        return QueueBuilder.durable("simple_queue").build();
    }
    //2、 交换机   Exchange 对象
    @Bean("exchangeDirect")
    public Exchange exchangeDirect(){
        return ExchangeBuilder.directExchange("simple_exchange_direct").build();
    }

    //3、 队列和交换机进行绑定  Binding对象

    /**
     *  @Qualifier("queue") 指定ioc容器中的对象
     * @param queue
     * @param exchange
     * @return
     */
    @Bean
    public Binding binding(@Qualifier("queue") Queue queue,
                           @Qualifier("exchangeDirect") Exchange exchange){
        return BindingBuilder.bind(queue).to(exchange).with("simple.key").noargs();
    }

}


